<template>
  <upload-excel :on-success="handleSuccess" />
</template>

<script>
import { batchAddEmployeeApi } from '@/api/employees'

export default {
  name: 'Import',
  data() {
    return {}
  },
  computed: {
    type() {
      return this.$route.query.type
    }
  },
  methods: {
    // 转换数据格式
    async batchAddEmployee(results) {
      // 定义一个转换的对象
      const userRelations = {
        入职日期: 'timeOfEntry',
        手机号: 'mobile',
        姓名: 'username',
        转正日期: 'correctionTime',
        工号: 'workNumber'
      }
      const arr = []
      // 遍历表格中的列表
      results.forEach((item) => {
        const tempObj = {} // 存放替换后的数据
        // 遍历列表中的每一项
        for (const key in item) {
          // 获取转换对象的值 获取英文的key
          const englishKey = userRelations[key]
          // 修改Excel日期格式
          // includes()用来判断一个数组是否包含一个指定的值，返回布尔值
          // 找到日期对应的键
          if (['correctionTime', 'timeOfEntry'].includes(englishKey)) {
            // 调用转换日期的函数
            tempObj[englishKey] = this.formatExcelDate(item[key])
          } else {
            // 把列表中的值赋值给tempobj
            tempObj[englishKey] = item[key]
          }
        }
        // 存放的数据就是目标数据
        arr.push(tempObj)
      })
      // 调用上传接口
      await batchAddEmployeeApi(arr)
      this.$message.success('恭喜！批量上传成功')
      this.$router.push('/employees/index') // 跳转页面
    },
    // 模板的上传实现功能
    handleSuccess({ results, header }) {
      // console.log(results)  excle里面的数据
      // console.log(header)    表头
      // 如果push的路由有user就启用上传功能,复用性
      if (this.type === 'user') {
        this.batchAddEmployee(results)
      }
    },
    // 导出表格
    async exportExcel() {
      import('@/vendor/Export2Excel').then((excel) => {
        excel.export_json_to_excel({
          header: ['姓名', '工资'], // 表头 必填
          data: [
            ['刘备', 100],
            ['关羽', 500]
          ], // 具体数据 必填
          filename: 'excel-list', // 非必填
          autoWidth: true, // 非必填
          bookType: 'xlsx' // 非必填
        })
      })
    },
    /**
     * 转换excel的日期格式
     */
    formatExcelDate(numb, format) {
      const time = new Date(numb * 24 * 3600000 + 1)
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return (
          year +
          format +
          (month < 10 ? '0' + month : month) +
          format +
          (date < 10 ? '0' + date : date)
        )
      }
      return (
        year +
        '-' +
        (month < 10 ? '0' + month : month) +
        '-' +
        (date < 10 ? '0' + date : date)
      )
    }
  }
}
</script>

<style>
</style>
